Effects of Host-Dependent Niches and Biotic Constraints on Climate Change Driven Range Shifts in Anemonefish

Author

Christopher Rauch

Published

January 13, 2026


--- QUALITY CONTROL FILTER ---
Original Species: 23
Excluded: 11
Final Analysis Set: 17
Excluded Species:
 [1] "Amphiprion_chagosensis"  "Amphiprion_mccullochi"  
 [3] "Amphiprion_omanensis"    "Amphiprion_barberi"     
 [5] "Amphiprion_latezonatus"  "Amphiprion_clarkii"     
 [7] "Premnas_biaculeatus"     "Amphiprion_bicinctus"   
 [9] "Amphiprion_sandaracinos" "Amphiprion_perideraion" 
[11] "Amphiprion_sebae"       

1 Purpose of this document

This Quarto document is the analysis and figure-production layer for my thesis. It is designed to:

  • load SDM outputs from outputs/{run_id}/
  • summarise and compare fish model performance across three formulations
    A (EnvOnly), B (HostOnly), C (Combined)
  • quantify ghost habitat as the spatial gap between climatic suitability and host-constrained suitability
  • quantify range shifts and the biotic constraint on expansion under future scenarios
  • save all figures to a clean directory structure for later transfer to LaTeX

If an expected file is missing (e.g., host predictions not yet generated), the corresponding analyses will skip and the rest of the report will still render.

2 Methods

2.1 Predictor sets and model definitions

Environmental predictors are principal components of the marine environment (PC1–PC4). Rugosity is included as a static predictor representing habitat structure.

Fish models are fit in three formulations:

  • EnvOnly (A): PC1–PC4 + rugosity
  • HostOnly (B): rugosity + fish-specific biotic host index
  • Combined (C): PC1–PC4 + rugosity + fish-specific biotic host index

The biotic host index is constructed from host anemone predictions (mean probability surfaces). If an interaction matrix is available, host predictions are weighted by the fish–host association strength and summed.

2.2 Why background bias uses fewer PCs (BG_ENV_VARS)

Background points are sampled using a bias-aware strategy: candidate background points are drawn from the modelling domain and then reweighted toward environmental similarity to presence points in a reduced environmental subspace:

BG_ENV_VARS <- c("PC1","PC2")

Using only PC1–PC2 is typically more defensible than using PC1–PC4 for bias correction because:

  • PC1–PC2 usually represent the strongest, smoothest gradients; they stabilise bias weighting.
  • Higher PCs are often noisier or more local; including them can over-condition the background and reduce transferability.
  • Bias correction is about sampling effort, not the full ecological response.

It is valid to expand BG_ENV_VARS to PC1–PC4 if PC3/PC4 represent strong, interpretable gradients and you can defend that they reflect sampling bias.

2.3 Spatial cross-validation and repeated evaluation

Model performance is assessed with spatially blocked holdout, repeated across bootstrap iterations. Metrics summarised here include AUC, TSS, sensitivity, specificity, log-loss, Brier score, and Boyce index.

2.4 Ensemble predictions

For each species/model type, multiple bootstrap models are projected to raster space; the mean and standard deviation of predicted probability are saved and used in post-analysis.

3 Data checks

# A tibble: 6 × 3
  item         path                                                       exists
  <chr>        <chr>                                                      <lgl> 
1 run_dir      /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/fi… TRUE  
2 stats_dir    /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/fi… TRUE  
3 pred_current /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/fi… TRUE  
4 pred_future  /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/fi… TRUE  
5 cache_dir    /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/fi… FALSE 
6 biotic_dir   /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/fi… FALSE 

4 Model performance

4.1 Load per-iteration statistics

$fish_rows
[1] 2385

$host_rows
[1] 80

$fish_species
[1] 23

$compare_loaded
[1] FALSE

4.2 Summary tables

# A tibble: 20 × 15
   run       species    model_type group n_iter auc_mean  auc_sd tss_mean tss_sd
   <chr>     <chr>      <chr>      <chr>  <int>    <dbl>   <dbl>    <dbl>  <dbl>
 1 final_run Amphiprio… EnvOnly    gene…     40    0.982 0.0160     0.947 0.0526
 2 final_run Amphiprio… HostOnly   gene…     40    0.980 0.00794    0.938 0.0250
 3 final_run Amphiprio… EnvOnly    <NA>      40    0.988 0.0101     0.936 0.0587
 4 final_run Amphiprio… Combined   <NA>      40    0.990 0.00839    0.936 0.0603
 5 final_run Amphiprio… Combined   gene…     38    0.977 0.0112     0.934 0.0334
 6 final_run Amphiprio… Combined   spec…     40    0.963 0.0412     0.897 0.100 
 7 final_run Amphiprio… EnvOnly    spec…     40    0.952 0.0458     0.887 0.0925
 8 final_run Amphiprio… HostOnly   gene…     39    0.945 0.0255     0.872 0.0676
 9 final_run Amphiprio… Combined   gene…     39    0.942 0.0293     0.861 0.0799
10 final_run Amphiprio… EnvOnly    gene…     40    0.936 0.0274     0.858 0.0758
11 final_run Amphiprio… HostOnly   spec…     40    0.930 0.0451     0.810 0.127 
12 final_run Amphiprio… Combined   gene…     40    0.927 0.0424     0.779 0.114 
13 final_run Amphiprio… HostOnly   gene…     40    0.921 0.0427     0.779 0.0463
14 final_run Amphiprio… Combined   spec…     40    0.908 0.0329     0.770 0.0851
15 final_run Amphiprio… Combined   gene…     40    0.886 0.101      0.759 0.175 
16 final_run Amphiprio… EnvOnly    spec…     40    0.906 0.0232     0.759 0.0620
17 final_run Amphiprio… EnvOnly    gene…     40    0.906 0.0416     0.753 0.0845
18 final_run Amphiprio… HostOnly   <NA>      40    0.873 0.0247     0.748 0.0669
19 final_run Amphiprio… HostOnly   gene…     40    0.898 0.0682     0.746 0.145 
20 final_run Amphiprio… HostOnly   gene…     40    0.863 0.0494     0.690 0.0749
# ℹ 6 more variables: boyce_mean <dbl>, brier_mean <dbl>, logloss_mean <dbl>,
#   thr_mean <dbl>, sens_mean <dbl>, spec_mean <dbl>

4.3 Host model performance (quality check)

# A tibble: 8 × 7
  species            n_iter auc_mean tss_mean boyce_mean brier_mean logloss_mean
  <chr>               <int>    <dbl>    <dbl>      <dbl>      <dbl>        <dbl>
1 Heteractis_crispa      10    0.790    0.541   -0.00821     0.0728        0.264
2 Cryptodendrum_adh…     10    0.809    0.525    0.556       0.104         0.354
3 Heteractis_magnif…     10    0.767    0.462    0.0679      0.104         0.338
4 Heteractis_malu        10    0.714    0.455   -0.0397      0.111         0.362
5 Stichodactyla_gig…     10    0.730    0.425    0.191       0.106         0.361
6 Entacmaea_quadric…     10    0.755    0.416    0.864       0.0964        0.337
7 Stichodactyla_had…     10    0.735    0.407    0.269       0.0850        0.300
8 Heteractis_aurora      10    0.745    0.401    0.459       0.0943        0.329

4.4 Distributions of performance metrics

4.5 Future fish maps (saved; optional printing)



## Amphiprion_akallopisos (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_akallopisos/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_akallopisos/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_akallopisos/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_akindynos/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_akindynos/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_akindynos/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_allardi/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_allardi/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_allardi/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_chrysogaster/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_chrysogaster/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_chrysogaster/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_chrysopterus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_chrysopterus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_ephippium/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_ephippium/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_ephippium/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_frenatus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_frenatus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_frenatus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_fuscocaudatus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_fuscocaudatus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_fuscocaudatus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_latifasciatus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_latifasciatus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_latifasciatus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_leucokranos/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_leucokranos/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_leucokranos/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_melanopus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_melanopus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_melanopus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_nigripes/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_nigripes/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_nigripes/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_ocellaris/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_ocellaris/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_ocellaris/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_percula/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_percula/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_percula/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_polymnus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_polymnus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_polymnus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_rubrocinctus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_rubrocinctus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/specialist/Amphiprion_rubrocinctus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### EnvOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_tricinctus/EnvOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### HostOnly — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_tricinctus/HostOnly_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### Combined — ssp119_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2050/generalist/Amphiprion_tricinctus/Combined_ssp119_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_akallopisos/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_akallopisos/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_akallopisos/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_akindynos/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_akindynos/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_akindynos/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_allardi/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_allardi/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_allardi/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_chrysogaster/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_chrysogaster/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_chrysogaster/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_chrysopterus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_chrysopterus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_ephippium/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_ephippium/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_ephippium/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_frenatus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_frenatus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_frenatus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_fuscocaudatus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_fuscocaudatus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_fuscocaudatus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_latifasciatus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_latifasciatus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_latifasciatus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_leucokranos/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_leucokranos/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_leucokranos/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_melanopus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_melanopus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_melanopus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_nigripes/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_nigripes/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_nigripes/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_ocellaris/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_ocellaris/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_ocellaris/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_percula/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_percula/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_percula/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_polymnus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_polymnus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_polymnus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_rubrocinctus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_rubrocinctus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/specialist/Amphiprion_rubrocinctus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### EnvOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_tricinctus/EnvOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### HostOnly — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_tricinctus/HostOnly_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### Combined — ssp119_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp119_2100/generalist/Amphiprion_tricinctus/Combined_ssp119_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_akallopisos/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_akallopisos/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_akallopisos/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_akindynos/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_akindynos/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_akindynos/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_allardi/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_allardi/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_allardi/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_chrysogaster/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_chrysogaster/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_chrysogaster/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_chrysopterus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_chrysopterus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_ephippium/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_ephippium/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_ephippium/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_frenatus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_frenatus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_frenatus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_fuscocaudatus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_fuscocaudatus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_fuscocaudatus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_latifasciatus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_latifasciatus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_latifasciatus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_leucokranos/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_leucokranos/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_leucokranos/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_melanopus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_melanopus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_melanopus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_nigripes/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_nigripes/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_nigripes/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_ocellaris/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_ocellaris/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_ocellaris/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_percula/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_percula/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_percula/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_polymnus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_polymnus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_polymnus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_rubrocinctus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_rubrocinctus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/specialist/Amphiprion_rubrocinctus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### EnvOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_tricinctus/EnvOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### HostOnly — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_tricinctus/HostOnly_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### Combined — ssp585_2050 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2050/generalist/Amphiprion_tricinctus/Combined_ssp585_2050_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_akallopisos/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_akallopisos/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akallopisos (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_akallopisos/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_akindynos/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_akindynos/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_akindynos (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_akindynos/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_allardi/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_allardi/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_allardi (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_allardi/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_chrysogaster/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_chrysogaster/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysogaster (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_chrysogaster/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_chrysopterus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_chrysopterus (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_chrysopterus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_ephippium/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_ephippium/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ephippium (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_ephippium/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_frenatus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_frenatus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_frenatus (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_frenatus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_fuscocaudatus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_fuscocaudatus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_fuscocaudatus (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_fuscocaudatus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_latifasciatus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_latifasciatus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_latifasciatus (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_latifasciatus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_leucokranos/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_leucokranos/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_leucokranos (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_leucokranos/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_melanopus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_melanopus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_melanopus (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_melanopus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_nigripes/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_nigripes/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_nigripes (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_nigripes/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_ocellaris/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_ocellaris/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_ocellaris (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_ocellaris/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_percula/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_percula/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_percula (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_percula/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_polymnus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_polymnus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_polymnus (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_polymnus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_rubrocinctus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_rubrocinctus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_rubrocinctus (specialist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/specialist/Amphiprion_rubrocinctus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### EnvOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_tricinctus/EnvOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### HostOnly — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_tricinctus/HostOnly_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       


## Amphiprion_tricinctus (generalist)

### Combined — ssp585_2100 mean

[1] "outputs/final_run/figures_final_index/02_maps/future/ssp585_2100/generalist/Amphiprion_tricinctus/Combined_ssp585_2100_mean.png"
attr(,"class")
[1] "knit_image_paths" "knit_asis"       

5 Ghost habitat

Ghost habitat is defined as areas suitable under EnvOnly but not suitable under Combined, using each model’s mean threshold_maxTSS across iterations when available.


--- Calculating Ghost Habitat for All Scenarios ---

6 Host–fish niche overlap and coupling

This section quantifies host–fish spatial coupling using niche overlap metrics. For each fish–host association (from the interaction matrix, if available), we compute overlap between fish suitability surfaces and host suitability surfaces.

We report two overlap types:

  • Fish climatic niche vs host niche: EnvOnly (fish) vs host ENM
  • Fish realised niche vs host niche: Combined (fish) vs host ENM

Overlap is computed on a random sample of raster cells where both rasters are defined, using:

  • Schoener’s D: ( D = 1 - |p_1 - p_2| )
  • Hellinger’s I: ( I = )

where (p_1) and (p_2) are normalised suitability weights (sum to 1 over sampled cells).

7 Range shifts and biotic constraints

We summarise shifts using centroid displacement (km) between current and each future scenario, separately for EnvOnly and Combined. The biotic constraint is:

[ = {EnvOnly} - ]

Positive values indicate that hosts constrain the magnitude of projected range shift.

8 POST-ANALYSIS: HYPOTHESIS TESTING & MECHANISMS

8.1 1. Model Performance Comparison (LMM)

This block loads the stats, merges with groups, runs the LMM, and plots the results faceted/colored by group.

Species included in final analysis: 16 
 [1] "Amphiprion_akallopisos"   "Amphiprion_akindynos"    
 [3] "Amphiprion_allardi"       "Amphiprion_chrysogaster" 
 [5] "Amphiprion_ephippium"     "Amphiprion_frenatus"     
 [7] "Amphiprion_fuscocaudatus" "Amphiprion_latifasciatus"
 [9] "Amphiprion_leucokranos"   "Amphiprion_melanopus"    
[11] "Amphiprion_nigripes"      "Amphiprion_ocellaris"    
[13] "Amphiprion_percula"       "Amphiprion_polymnus"     
[15] "Amphiprion_rubrocinctus"  "Amphiprion_tricinctus"   

>>> LMM RESULTS: AUC - Overall <<<
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: f
   Data: data

REML criterion at convergence: -6035.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.1242 -0.4680  0.2247  0.6692  2.2985 

Random effects:
 Groups   Name        Variance Std.Dev.
 species  (Intercept) 0.007422 0.08615 
 Residual             0.011723 0.10827 
Number of obs: 3816, groups:  species, 16

Fixed effects:
                Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    8.408e-01  2.175e-02  1.540e+01  38.656   <2e-16 ***
modelHostOnly -5.111e-02  4.294e-03  3.798e+03 -11.903   <2e-16 ***
modelCombined  9.279e-03  4.299e-03  3.798e+03   2.158    0.031 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) mdlHsO
modlHstOnly -0.099       
modelCombnd -0.099  0.502

>>> LMM RESULTS: TSS - Overall <<<
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: f
   Data: data

REML criterion at convergence: -3404.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.2490 -0.5913  0.1613  0.6981  2.6491 

Random effects:
 Groups   Name        Variance Std.Dev.
 species  (Intercept) 0.02586  0.1608  
 Residual             0.02332  0.1527  
Number of obs: 3816, groups:  species, 16

Fixed effects:
                Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    6.485e-01  4.043e-02  1.523e+01  16.040 5.97e-11 ***
modelHostOnly -6.346e-02  6.056e-03  3.798e+03 -10.478  < 2e-16 ***
modelCombined  2.217e-02  6.064e-03  3.798e+03   3.656  0.00026 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) mdlHsO
modlHstOnly -0.075       
modelCombnd -0.075  0.502

--- SUBSET: GENERALISTS ---

>>> LMM RESULTS: AUC - Generalists <<<
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: f
   Data: data

REML criterion at convergence: -3553.9

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-4.1480 -0.3458  0.1422  0.5153  2.4438 

Random effects:
 Groups   Name        Variance Std.Dev.
 species  (Intercept) 0.007134 0.08446 
 Residual             0.008695 0.09325 
Number of obs: 1896, groups:  species, 8

Fixed effects:
                Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    8.704e-01  3.009e-02  7.145e+00  28.925 1.14e-08 ***
modelHostOnly -2.132e-02  5.247e-03  1.886e+03  -4.063 5.05e-05 ***
modelCombined -3.275e-03  5.260e-03  1.886e+03  -0.623    0.534    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) mdlHsO
modlHstOnly -0.088       
modelCombnd -0.088  0.504

>>> LMM RESULTS: TSS - Generalists <<<
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: f
   Data: data

REML criterion at convergence: -2039.4

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.5363 -0.4724  0.0938  0.5939  2.5203 

Random effects:
 Groups   Name        Variance Std.Dev.
 species  (Intercept) 0.02150  0.1466  
 Residual             0.01933  0.1390  
Number of obs: 1896, groups:  species, 8

Fixed effects:
                Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    7.148e-01  5.214e-02  7.107e+00  13.709 2.27e-06 ***
modelHostOnly -2.786e-02  7.824e-03  1.886e+03  -3.560  0.00038 ***
modelCombined  1.245e-02  7.843e-03  1.886e+03   1.587  0.11262    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) mdlHsO
modlHstOnly -0.076       
modelCombnd -0.076  0.504

--- SUBSET: SPECIALISTS ---

>>> LMM RESULTS: AUC - Specialists <<<
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: f
   Data: data

REML criterion at convergence: -2677.8

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.8074 -0.6111  0.2590  0.6869  2.1674 

Random effects:
 Groups   Name        Variance Std.Dev.
 species  (Intercept) 0.005918 0.07693 
 Residual             0.014098 0.11873 
Number of obs: 1920, groups:  species, 8

Fixed effects:
                Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    8.111e-01  2.760e-02  7.278e+00  29.387 7.87e-09 ***
modelHostOnly -8.069e-02  6.637e-03  1.910e+03 -12.157  < 2e-16 ***
modelCombined  2.174e-02  6.637e-03  1.910e+03   3.275  0.00107 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) mdlHsO
modlHstOnly -0.120       
modelCombnd -0.120  0.500

>>> LMM RESULTS: TSS - Specialists <<<
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: f
   Data: data

REML criterion at convergence: -1461.3

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.1567 -0.6765  0.2147  0.6841  2.4316 

Random effects:
 Groups   Name        Variance Std.Dev.
 species  (Intercept) 0.02108  0.1452  
 Residual             0.02653  0.1629  
Number of obs: 1920, groups:  species, 8

Fixed effects:
                Estimate Std. Error         df t value Pr(>|t|)    
(Intercept)    5.820e-01  5.174e-02  7.147e+00  11.250 8.38e-06 ***
modelHostOnly -9.878e-02  9.105e-03  1.910e+03 -10.849  < 2e-16 ***
modelCombined  3.185e-02  9.105e-03  1.910e+03   3.498 0.000479 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) mdlHsO
modlHstOnly -0.088       
modelCombnd -0.088  0.500

8.2 2. Biotic Constraint (Range Shift)

Note: Amphiprion bicinctus is excluded from range shift calculations due to geometric artifacts in the Red Sea.


--- HYPOTHESIS 2: BIOTIC CONSTRAINT ---
                   species      group    scenario Potential_Shift_km
1 Amphiprion_latifasciatus generalist ssp119_2050             2171.5
2 Amphiprion_fuscocaudatus generalist ssp119_2050             1548.3
3       Amphiprion_percula specialist ssp119_2050              857.9
4      Amphiprion_frenatus specialist ssp119_2050              512.4
5     Amphiprion_ephippium specialist ssp119_2050              656.3
6     Amphiprion_melanopus specialist ssp119_2050              571.5
  Realized_Shift_km Lag_km Pct_Loss
1            1808.7  362.8     16.7
2            1411.7  136.6      8.8
3             754.1  103.7     12.1
4             458.0   54.4     10.6
5             616.6   39.7      6.0
6             567.7    3.8      0.7

8.3 3. Specialist vs. Generalist Test


--- HYPOTHESIS 3: SPECIALIST VS GENERALIST ---


> Scenario: ssp119_2050

    Welch Two Sample t-test

data:  lag_km by group
t = -0.37323, df = 9.1892, p-value = 0.7174
alternative hypothesis: true difference in means between group generalist and group specialist is not equal to 0
95 percent confidence interval:
 -435.9962  312.1711
sample estimates:
mean in group generalist mean in group specialist 
              -128.59600                -66.68346 


> Scenario: ssp119_2100

    Welch Two Sample t-test

data:  lag_km by group
t = -0.41872, df = 9.1799, p-value = 0.6851
alternative hypothesis: true difference in means between group generalist and group specialist is not equal to 0
95 percent confidence interval:
 -439.7045  302.0067
sample estimates:
mean in group generalist mean in group specialist 
              -129.44370                -60.59478 


> Scenario: ssp585_2050

    Welch Two Sample t-test

data:  lag_km by group
t = -0.35508, df = 9.3375, p-value = 0.7304
alternative hypothesis: true difference in means between group generalist and group specialist is not equal to 0
95 percent confidence interval:
 -434.4373  315.9971
sample estimates:
mean in group generalist mean in group specialist 
              -125.51743                -66.29735 


> Scenario: ssp585_2100

    Welch Two Sample t-test

data:  lag_km by group
t = -0.48995, df = 9.1028, p-value = 0.6358
alternative hypothesis: true difference in means between group generalist and group specialist is not equal to 0
95 percent confidence interval:
 -448.1225  288.3406
sample estimates:
mean in group generalist mean in group specialist 
              -105.93677                -26.04581 

# A tibble: 4 × 7
  scenario    t_value    df p_value significance mean_generalist mean_specialist
  <chr>         <dbl> <dbl>   <dbl> <chr>                  <dbl>           <dbl>
1 ssp119_2050  -0.373  9.19   0.717 ns                     -129.           -66.7
2 ssp119_2100  -0.419  9.18   0.685 ns                     -129.           -60.6
3 ssp585_2050  -0.355  9.34   0.730 ns                     -126.           -66.3
4 ssp585_2100  -0.49   9.1    0.636 ns                     -106.           -26  

8.4 Maps & Deltas


--- Generating Species Maps ---

--- Generating Host Maps ---


--- Generating Fish Maps ---

9 Output locations

All figures and tables created by this report are saved under:

  • Figures: outputs/{run_id}/{figures_subdir}/
  • Tables: outputs/{run_id}/{tables_subdir}/
# A tibble: 1 × 2
  figures                                                                 tables
  <chr>                                                                   <chr> 
1 /home/bi-server-kyoto/a0236995/sdm_anemonefish/outputs/final_run/figur… /home…

10 Replication

To ensure reproducibility of these results, the following R environment and package versions were used:

─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.5.2 (2025-10-31)
 os       Ubuntu 24.04.1 LTS
 system   x86_64, linux-gnu
 ui       X11
 language (EN)
 collate  C.UTF-8
 ctype    C.UTF-8
 tz       Asia/Tokyo
 date     2026-01-13
 pandoc   3.6.3 @ /usr/lib/rstudio-server/bin/quarto/bin/tools/x86_64/ (via rmarkdown)
 quarto   1.7.32 @ /usr/lib/rstudio-server/bin/quarto/bin/quarto

─ Packages ───────────────────────────────────────────────────────────────────
 package           * version    date (UTC) lib source
 bit                 4.6.0      2025-03-06 [1] CRAN (R 4.5.2)
 bit64               4.6.0-1    2025-01-16 [1] CRAN (R 4.5.2)
 boot                1.3-30     2024-02-26 [4] CRAN (R 4.4.0)
 class               7.3-22     2023-05-03 [4] CRAN (R 4.4.0)
 classInt            0.4-11     2025-01-08 [1] CRAN (R 4.5.2)
 cli                 3.6.5      2025-04-23 [1] CRAN (R 4.5.2)
 codetools           0.2-20     2024-03-31 [4] CRAN (R 4.4.0)
 crayon              1.5.3      2024-06-20 [1] CRAN (R 4.5.2)
 data.table          1.17.8     2025-07-10 [1] CRAN (R 4.5.2)
 DBI                 1.2.3      2024-06-02 [1] CRAN (R 4.5.2)
 digest              0.6.37     2024-08-19 [1] CRAN (R 4.5.2)
 dplyr             * 1.1.4      2023-11-17 [1] CRAN (R 4.5.2)
 e1071               1.7-16     2024-09-16 [1] CRAN (R 4.5.2)
 evaluate            1.0.5      2025-08-27 [1] CRAN (R 4.5.2)
 farver              2.1.2      2024-05-13 [1] CRAN (R 4.5.2)
 fastmap             1.2.0      2024-05-15 [1] CRAN (R 4.5.2)
 generics            0.1.4      2025-05-09 [1] CRAN (R 4.5.2)
 ggplot2           * 4.0.0      2025-09-11 [1] CRAN (R 4.5.2)
 glue                1.8.0      2024-09-30 [1] CRAN (R 4.5.2)
 gtable              0.3.6      2024-10-25 [1] CRAN (R 4.5.2)
 here                1.0.2      2025-09-15 [1] CRAN (R 4.5.2)
 hms                 1.1.4      2025-10-17 [1] CRAN (R 4.5.2)
 htmltools           0.5.8.1    2024-04-04 [1] CRAN (R 4.5.2)
 htmlwidgets         1.6.4      2023-12-06 [1] CRAN (R 4.5.2)
 jsonlite            2.0.0      2025-03-27 [1] CRAN (R 4.5.2)
 KernSmooth          2.23-24    2024-05-17 [4] CRAN (R 4.4.0)
 knitr               1.50       2025-03-16 [1] CRAN (R 4.5.2)
 labeling            0.4.3      2023-08-29 [1] CRAN (R 4.5.2)
 lattice             0.22-5     2023-10-24 [4] CRAN (R 4.3.1)
 lifecycle           1.0.4      2023-11-07 [1] CRAN (R 4.5.2)
 lme4              * 1.1-37     2025-03-26 [1] CRAN (R 4.5.2)
 lmerTest          * 3.1-3      2020-10-23 [1] CRAN (R 4.5.2)
 magrittr            2.0.4      2025-09-12 [1] CRAN (R 4.5.2)
 MASS                7.3-61     2024-06-13 [4] CRAN (R 4.4.1)
 Matrix            * 1.7-1      2024-10-18 [4] CRAN (R 4.4.1)
 minqa               1.2.8      2024-08-17 [1] CRAN (R 4.5.2)
 nlme                3.1-165    2024-06-06 [4] CRAN (R 4.4.0)
 nloptr              2.2.1      2025-03-17 [1] CRAN (R 4.5.2)
 numDeriv            2016.8-1.1 2019-06-06 [1] CRAN (R 4.5.2)
 pillar              1.11.1     2025-09-17 [1] CRAN (R 4.5.2)
 pkgconfig           2.0.3      2019-09-22 [1] CRAN (R 4.5.2)
 proxy               0.4-27     2022-06-09 [1] CRAN (R 4.5.2)
 purrr             * 1.2.0      2025-11-04 [1] CRAN (R 4.5.2)
 R6                  2.6.1      2025-02-15 [1] CRAN (R 4.5.2)
 ragg                1.5.0      2025-09-02 [1] CRAN (R 4.5.2)
 rbibutils           2.4        2025-11-07 [1] CRAN (R 4.5.2)
 RColorBrewer        1.1-3      2022-04-03 [1] CRAN (R 4.5.2)
 Rcpp                1.1.0      2025-07-02 [1] CRAN (R 4.5.2)
 Rdpack              2.6.4      2025-04-09 [1] CRAN (R 4.5.2)
 readr             * 2.1.5      2024-01-10 [1] CRAN (R 4.5.2)
 reformulas          0.4.2      2025-10-28 [1] CRAN (R 4.5.2)
 rlang               1.1.6      2025-04-11 [1] CRAN (R 4.5.2)
 rmarkdown           2.30       2025-09-28 [1] CRAN (R 4.5.2)
 rnaturalearth       1.1.0      2025-07-28 [1] CRAN (R 4.5.2)
 rnaturalearthdata   1.0.0      2024-02-09 [1] CRAN (R 4.5.2)
 rprojroot           2.1.1      2025-08-26 [1] CRAN (R 4.5.2)
 rstudioapi          0.17.1     2024-10-22 [1] CRAN (R 4.5.2)
 S7                  0.2.0      2024-11-07 [1] CRAN (R 4.5.2)
 scales              1.4.0      2025-04-24 [1] CRAN (R 4.5.2)
 sessioninfo         1.2.3      2025-02-05 [1] CRAN (R 4.5.2)
 sf                  1.0-22     2025-11-10 [1] CRAN (R 4.5.2)
 stringi             1.8.7      2025-03-27 [1] CRAN (R 4.5.2)
 stringr           * 1.6.0      2025-11-04 [1] CRAN (R 4.5.2)
 systemfonts         1.3.1      2025-10-01 [1] CRAN (R 4.5.2)
 terra             * 1.8-80     2025-11-05 [1] CRAN (R 4.5.2)
 textshaping         1.0.4      2025-10-10 [1] CRAN (R 4.5.2)
 tibble              3.3.0      2025-06-08 [1] CRAN (R 4.5.2)
 tidyr             * 1.3.1      2024-01-24 [1] CRAN (R 4.5.2)
 tidyselect          1.2.1      2024-03-11 [1] CRAN (R 4.5.2)
 tidyterra           0.7.2      2025-04-14 [1] CRAN (R 4.5.2)
 tzdb                0.5.0      2025-03-15 [1] CRAN (R 4.5.2)
 units               1.0-0      2025-10-09 [1] CRAN (R 4.5.2)
 utf8                1.2.6      2025-06-08 [1] CRAN (R 4.5.2)
 vctrs               0.6.5      2023-12-01 [1] CRAN (R 4.5.2)
 vroom               1.6.6      2025-09-19 [1] CRAN (R 4.5.2)
 withr               3.0.2      2024-10-28 [1] CRAN (R 4.5.2)
 xfun                0.54       2025-10-30 [1] CRAN (R 4.5.2)
 yaml                2.3.10     2024-07-26 [1] CRAN (R 4.5.2)

 [1] /home/bi-server-kyoto/R/x86_64-pc-linux-gnu-library/4.5
 [2] /usr/local/lib/R/site-library
 [3] /usr/lib/R/site-library
 [4] /usr/lib/R/library
 * ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────